package it.unicam.ids.pvm.data;

import it.unicam.ids.pvm.distributore.Lato;
import it.unicam.ids.pvm.postazione.Cassa;

/**
 * La classe rappresenta un'interfaccia per la gestione 
 * della cassa, nella sorgente dati.
 * Uso del design pattern DAO.
 * @author Luca Iachini, Valerio Iachini, Alessandro Cardenà
 *
 */
public interface CassaDAO {
	
	/**
	 * Il metodo consente di inserire un nuovo elemento cassa, 
	 * nella sorgente dati.
	 * @param cassa nuovo elemento cassa da inserire.
	 * @param lato lato del distributore in cui è presente la cassa.
	 * @throws DAOException messaggio d'errore relativo 
	 * 							all'inserimento dell'elemento cassa.
	 */

	public void insert(Cassa cassa, Lato lato) throws DAOException;
	
	/**
	 * Il metodo consente di aggiornare un elemento cassa, presente
	 * nella sorgente dati.
	 * @param cassa elemento cassa contenete i dati aggiornati.
	 * @param lato lato del distributore in cui è presente la cassa.
	 * @throws DAOException messaggio d'errore relativo 
	 * 							all'aggiornamento di un elemento cassa.
	 */

	public void update(Cassa cassa, Lato lato) throws DAOException;
	
	/**
	 * Il metodo consente di eliminare un elemento cassa 
	 * presente nella sorgente dati.
	 * @param lato lato del distributore in cui è presente la cassa.
	 * @throws DAOException messaggio d'errore relativo 
	 * 							all'eliminazione di un elemento cassa.
	 */

	public void delete(Lato lato) throws DAOException;
	
	/**
	 * Il metodo consente di recuperare un elemento cassa presente 
	 * nella sorgente dati.
	 * @param lato lato del distributore in cui è presente la cassa.
	 * @return cassa elemento cassa cercato.
	 * @throws DAOException messaggio d'errore relativo 
	 * 							al recupero di un elemento cassa.
	 */

	public Cassa findByLato(Lato lato) throws DAOException;
	
}
